// Import packetage
import java.util.Date;

// Our class
public class Alumno implements Comparable<Alumno> {
	/*
	 * ==========================================================================================================
	 * PARTE DE BYRON
	 * ==========================================================================================================
	 */
	private int carnet;
	private String nombre;
	private float velocidad;
	private Date[] asistencia;
	private int justificadas;
	
	public int getCarnet() {
		return carnet;
	}
	
	public String getAsistencia() {
		// Declare variables and objects
		String respuesta = "";
		
		// Make the answer
		for(int i = 0; i < asistencia.length; i++) {
			respuesta += asistencia[i] + "\n"; 
		}
		
		// Return the answer
		return respuesta;
	}
	
	public boolean verificarAsistencia(Date fecha) {
		// Declare variable and objects
		boolean respuesta = false;
		
		// Search for the date
		for(int i = 0; i < asistencia.length; i++) {
			if(asistencia[i].equals(fecha)) {
				respuesta = true;
				break;
			}
		}
		
		// Return answer
		return respuesta;
	}
	
	public int compareTo(Alumno otroAlumno) {
		// Declare variables and objects
		int respuesta = 0;
		
		// Compare the 'alumnos' objects by the 'carnet' field
		if(carnet < otroAlumno.getCarnet()) {
			respuesta = -1;
		} else if(carnet == otroAlumno.getCarnet()) {
			respuesta = 0;
		} else if(carnet > otroAlumno.getCarnet()) {
			respuesta = 1;
		}
		
		// Return the answer
		return respuesta;
	}
	
	public String toString() {
		// Declare variables and objects
		String respuesta = "";
		
		// Create the String of the 'Alumno' object 
		respuesta += 
			"Carnet................: " + carnet + "\n" + 
			"Nombre................: " + nombre + "\n" +
			"Asistencias...........: " + asistencia.length + "\n" +
			"Faltas justificadas...: " + justificadas;
		
		// Return the string of the 'Alumno' object
		return respuesta;
	}

	
	/*
	 * ==========================================================================================================
	 * PARTE DE RENDON
	 * ==========================================================================================================
	 */

	public Alumno(int id, String name, float speed) {

        // Dar valor a los datos de instancia
        justificadas = 0;
        nombre = name;
        carnet = id;
        velocidad = speed;

    }
	
	
    private void expandir() {

        Date[] temporal = new Date[asistencia.length];

        for(int i = 0; i < asistencia.length - 1; i++) {
            temporal[i] = asistencia[i];
        }

        asistencia = new Date[temporal.length + 1];
        
        for(int i = 0; i < temporal.length - 1; i++) {
            asistencia[i] = temporal[i];
        }

    }

    
    
    
    public String getNombre() {

        return nombre;

    }

    

    public int getCarne() {

        return carnet;

    }
    
    
    public float getVelocidad() {
        return velocidad;
    }
    
    
    public float getCantidadAsistencia() {
        return asistencia.length + justificadas;
    }



    //Marcar Asistencia... agregar FECHA al array asistencia    
    public void marcarAsistencia(Date fecha) {
    	expandir();
    	asistencia[asistencia.length - 1] = fecha;
    }
    
    
    //Justificar Asistencia   
    public void justificarAsistencia() {
        justificadas++;
    }
    

}


